home *** CD-ROM | disk | FTP | other *** search
- #ifndef plugin_protocol_defsH
- #define plugin_protocol_defsH
-
- #include <windows.h>
-
- #include "plugin_contactlist_defs.h"
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- char *ID; //ID protoko│u
-
- char *Name; //Nazwa - pokazywana np przy dodawaniu nowego kontaktu
- char *Extension; //rozszerzenie, ktore bedzie dodawane do identyfikatora, aby poprawnie zidentyfikowac protokol
- //np "tlen.pl" dla tlenu, "gg" dla gg (w wiadomosci wpiszemy do: marekk@tlen.pl, 234343@gg, 3252353@icq)
- char *Description; //Opis protoko│u
-
- int CapsFlag1; //Flagi opisujace funkcje i zdarzenia udostepnianie przez dany protok≤│
- int CapsFlag2;
- int CapsFlag3;
- int CapsFlag4;
-
-
- } ProtocolDef; //Definicja protoko│u
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- char *ProtocolID; //ID protoko│u pod kt≤ry siΩ podczepiamy
-
- TLENFUNCTION CallBackFunc; //funkcja otrzymuj╣ca notyfikacje
- char *HookFuncName; //j.w.
-
- HINSTANCE moduleHandle; //uchwyt modu│u pluginu
-
- } ProtocolHookDef; //Definicja hooka protoko│u
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- char *ProtocolID; //ID protoko│u
- char *FunctionName; //Nazwa funkcji protoko│u
-
- WPARAM wParam; //Parametry wywo│ania
- LPARAM lParam;
-
- } ProtocolFunctionDef; //Definicja funkcji protoko│u
-
- //Tworzy nowy protok≤│
- #define TLEN_PROTOCOL_ADDNEWPROTOCOL "Tlen/AddNewProtocol"
- //WPARAM: ProtocolDef *
-
- //Kasuje protok≤│
- #define TLEN_PROTOCOL_REMOVEPROTOCOL "Tlen/RemoveProtocol"
- //WPARAM: char *ProtocolID
-
-
- // Zwraca listΩ protoko│≤w
- // listy te sa alokowane dynamicznie, wiec nalezy potem usunac kazdy element z listy
- // funkcja sl_delete
- #define TLEN_PROTOCOL_GETPROTOCOLLIST "Tlen/GetProtocolList"
- //WPARAM: StringListDef *IDs
- //LPARAM: StringListDef *Names
-
- //Podczepia siΩ pod zdarzenia protoko│u
- #define TLEN_PROTOCOL_HOOK_EVENT "Tlen/ProtocolHookEvent" //jako wParam TransportHookDef *
- //Kasuje hook'a
- #define TLEN_PROTOCOL_UNHOOK_EVENT "Tlen/ProtocolUnhookEvent" //jako wParam char *ProtocolID, lParam HANDLE hookID;
- //Powiadamia podczepione hooki o zdarzeniu
- #define TLEN_PROTOCOL_NOTIFY_HOOKS "Tlen/ProtocolNotifyHooks" //jako wParam ProtocolEventDef *, lParam - odpowiednia struktura
- //Wywo│uje funkcje protoko│u
- #define TLEN_PROTOCOL_CALL_FUNCTION "Tlen/ProtocolCallFunction"
-
- //do hookowania siΩ pod zdarzenia ze wszystkich protokolow
- #define TLEN_ALL_PROTOCOL_NOTIFICATION_HOOK "Tlen/AllProtocolNotificationHook"
-
-
- #define CallTlenProtoFunction(hinst, a, b, c, d, ret) {ProtocolFunctionDef fn;InitializeStruct(fn);fn.ProtocolID=a;fn.FunctionName=b;fn.wParam=(WPARAM)c;fn.lParam=(LPARAM)d;ret=tlen_functions->CallTlenFunction(hInst,TLEN_PROTOCOL_CALL_FUNCTION,(WPARAM)&fn,NULL);};
-
- #define PROTOCOL_ID_TLEN "TLEN"
- #define PROTOCOL_ID_GG "GG"
- #define PROTOCOL_ID_SMS "SMS"
- #define PROTOCOL_ID_GENERAL "GENERAL"
- //rozmowa z anonimowymi z czat≤w
- #define PROTOCOL_ID_CHATANONYMOUS "ANON"
-
- //bardziej jako ownerIDs na liscie kontaktow
- #define PROTOCOL_ID_GROUP "GRP"
- #define PROTOCOL_ID_CHATROOM "ROOM"
-
- /*
- //Flagi opisujace mozliwosci protokolu, kt≤re wkr≤tce siΩ pojawi╣...
- #define PROTOCOL_CAPS1_SENDRAWDATA 0x00000001
- #define PROTOCOL_CAPS1_FEEDRAWDATA 0x00000002
- #define PROTOCOL_CAPS1_SENDMESSAGENORMAL 0x00000004
- #define PROTOCOL_CAPS1_SENDMESSAGECHAT 0x00000008
- #define PROTOCOL_CAPS1_CHANGEUSERSTATE 0x00000010
- #define PROTOCOL_CAPS1_GETUSERSTATE 0x00000020
-
- #define PROTOCOL_CAPS2_STATE_TEXT 0x10000000 //czy mozna ustawiac stany opisowe
- #define PROTOCOL_CAPS2_STATE_DATE 0x20000000 //czy mozna ustawiac date powrotu
- #define PROTOCOL_CAPS2_STATE_OFFLINE 0x00000001
- #define PROTOCOL_CAPS2_STATE_ONLINE 0x00000002
- #define PROTOCOL_CAPS2_STATE_CHAT 0x00000004
- #define PROTOCOL_CAPS2_STATE_DND 0x00000008
- #define PROTOCOL_CAPS2_STATE_AWAY 0x00000010
- #define PROTOCOL_CAPS2_STATE_XA 0x00000020
- #define PROTOCOL_CAPS2_STATE_INVISIBLE 0x00000040
- */
-
- //Struktury:
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- char *ProtocolID; //ID protoko│u
- int EventID; //kod zdarzenia
-
- } ProtocolEventDef; //Definicja zdarzenia protoko│u
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- ContactDef Contact; //id contact i protocol
- ContactsListDef MultipleContacts; //jesli wiadomosc wysylana jest do wielu osob, to userid bedzie null, a tu bedzie lista.
-
- int Flags; //flagi - normal, chat, konferencyjna, offline, etc.
- unsigned int TimeStamp; //czas wyslania - standardowy timestamp
- char *MessageID; //ID wiadomosci
-
- char *MessageText; //Tekst wiadomosci
-
- //dla konferencji
- char *RoomName;
-
- //dla wiadomosci wyslanych z WWW na tlen
- char *UserName;
- char *UserEmail;
- char *WWWGate;
-
- //"uchwyt" wiadomosci - do szybkiego rozroznienia wiadomosci w funkcjach callback
- int MessageHandle;
-
- //Ekstra dane
- void *OwnerData;
-
- } ProtocolMessageDef;
-
- #define PROTOCOL_MESSAGE_FLAGS_OFFLINE 0x00000001
- #define PROTOCOL_MESSAGE_FLAGS_NORMAL 0x00000002
- #define PROTOCOL_MESSAGE_FLAGS_CHAT 0x00000004
- #define PROTOCOL_MESSAGE_FLAGS_WWW 0x00000008
- #define PROTOCOL_MESSAGE_FLAGS_CONFERENCE 0x00000010
-
- #define PROTOCOL_MESSAGE_FLAGS_INCOMING 0x00010000
- #define PROTOCOL_MESSAGE_FLAGS_OUTGOING 0x00020000
- #define PROTOCOL_MESSAGE_FLAGS_MULTIPLECONTACTS 0x00100000
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- unsigned int DataLength;
- char *Data;
-
- //Ekstra dane
- void *OwnerData;
-
- int Flags;
-
- } ProtocolRawDataDef;
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- ContactDef Contact; //id contact i protocol
-
- int Flags; //flagi - do wykorzystania w przyszlosci
- char *Reason;
-
- int TimeStamp;
-
- //Ekstra dane
- void *OwnerData;
-
- } ProtocolAuthRequestDef;
-
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- ContactDef Contact; //id contact i protocol
-
- int CurrentState; //stan usera
- int PreviousState; //poprzedni stan usera
- char *CurrentDescription; //opis stanu
- char *PreviousDescription; //opis poprzedniego stanu
-
- int Flags; //flagi
- unsigned int TimeStamp; //czas - do wykorzystania w przyszlosci
-
- unsigned int CurrentComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
- unsigned int PreviousComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
-
- //Ekstra dane
- void *OwnerData;
-
- } ProtocolPresenceDef;
-
- #define PROTOCOL_PRESENCE_STATE_OFFLINE 1
- #define PROTOCOL_PRESENCE_STATE_ONLINE 2
- #define PROTOCOL_PRESENCE_STATE_CHAT 3
- #define PROTOCOL_PRESENCE_STATE_DND 4
- #define PROTOCOL_PRESENCE_STATE_AWAY 5
- #define PROTOCOL_PRESENCE_STATE_XA 6
- #define PROTOCOL_PRESENCE_STATE_INVISIBLE 7
-
- #define PROTOCOL_PRESENCE_FLAG_ONLYFRIENDS 0x00010000 //dla funcji ustawiajacej i pobierajacej stan uzytkownika
- #define PROTOCOL_PRESENCE_FLAG_AUTOLOGIN 0x00000001 //zmieniony automatycznie po zalogowaniu
- #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYENTER 0x00000002
- #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITKEY 0x00000004
- #define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITMOUSE 0x00000008
- #define PROTOCOL_PRESENCE_FLAG_CUSTOMTEXT 0x00000010
- #define PROTOCOL_PRESENCE_FLAG_PLUGINCHANGED 0x00000020
- #define PROTOCOL_PRESENCE_FLAG_MENUCLICKED 0x00000040
-
-
- //Definicje funkcji dla protoko│≤w - Protocol Function PF
-
- #define PF_SENDMESSAGE "PFSendMessage"
- //WPARAM: ProtocolMessageDef *
-
- #define PF_GETUSERSTATE "PFGetUserState"
- #define PF_CHANGEUSERSTATE "PFChangeUserState"
- //WPARAM: ProtocolPresenceDef *
-
- #define PF_SENDRAWDATA "PFSendRawData"
- //WPARAM: ProtocolRawDataDef *
- //RETURN:
- #define PF_SENDRAWDATA_RV_OK 0
- #define PF_SENDRAWDATA_RV_NOTCONNECTED 1
-
- #define PF_FEEDRAWDATA "PFFeedRawData"
- //WPARAM: ProtocolRawDataDef *
- //RETURN:
- #define PF_FEEDRAWDATA_RV_OK 0
- #define PF_FEEDRAWDATA_RV_NOTCONNECTED 1
-
- //-----------------------------------------------------------------------
- //Zdarzenia protokolow
- //-----------------------------------------------------------------------
- //Jako WPARAM: ProtocolEventDef *
-
- #define PROTOCOL_EVENT_BEFORERECVRAWDATA 0x0004 //Tu mo┐na zablokowaµ dalsze przetwarzanie pakietu
- #define PROTOCOL_EVENT_AFTERRECVRAWDATA 0x000A
- #define PROTOCOL_EVENT_AFTERPROCESSEDRECVRAWDATA 0x000C
- #define PROTOCOL_EVENT_AFTERRECVMESSAGE 0x000E
- #define PROTOCOL_EVENT_BEFORESENDRAWDATA 0x0007 //Tu mo┐na zablokowaµ wys│anie pakietu
- #define PROTOCOL_EVENT_AFTERSENDRAWDATA 0x000B
- //LPARAM: ProtocolRawDataDef *
-
- #define PROTOCOL_EVENT_LOGGEDIN 0x0008
- #define PROTOCOL_EVENT_LOGGEDOUT 0x0009
- //LPARAM: ContactDef *
-
- #define PROTOCOL_EVENT_RECVMESSAGE 0x0001
- #define PROTOCOL_EVENT_BEFORESENDMESSAGE 0x0005
- //LPARAM: ProtocolMessageDef *
-
- #define PROTOCOL_EVENT_RECVPRESENCE 0x0002
- #define PROTOCOL_EVENT_BEFORESTATUSCHANGE 0x0006
- //LPARAM: ProtocolPresenceDef *
-
- #define PROTOCOL_EVENT_AUTHREQUEST 0x000D
- //LPARAM: ProtocolAuthRequestDef *
-
- #define PROTOCOL_EVENT_RECVROSTER 0x0003
- //LPARAM: NULL
-
- #define PROTOCOL_EVENT_CONTACTDELETED 0x0010
- //LPARAM ContactDef *
-
- #define PROTOCOL_EVENT_CONTACTCHANGED 0x0020
-
- //LPARAM:
-
- typedef struct {
-
- int structSize; //wielko£µ strutkury w bajtach
-
- ContactDef old_ct;
- ContactDef new_ct;
-
- } ProtocolEventContactChanged;
-
- //-----------------------------------------------------------------------
- //Funkcje istniej╣ce ale na razie nieudokumentowane ;-)
- //-----------------------------------------------------------------------
- #define PF_SENDNORMALMESSAGE "PFSendNormalMessage"
- #define PF_BEGINCHAT "PFBeginChat"
- #define PF_BEGINCONFERENCE "PFBeginConference"
- #define PF_BEGINVOICECHAT "PFBeginVoiceChat"
- #define PF_BEGINVIDEOCHAT "PFBeginVideoChat"
- #define PF_BEGINVOICECHAT_OLD "PFBeginVoiceChatOld"
- #define PF_SENDFILES "PFSendFiles"
- #define PF_SENDFILES_OLD "PFSendFilesOld"
- #define PF_DELETECONTACTS "PFDeleteContacts"
- #define PF_CHANGECONTACTSGROUP "PFChangeContactsGroup"
- #define PF_SHOWPROPERTIES "PFShowProperties"
- #define PF_SHOWADDCONTACT "PFShowAddContact"
- #define PF_SHOWVCARD "PFShowVCard"
- #define PF_SHOWARCHIVE "PFShowArchive"
- #define PF_BLOCKCONTACTS "PFBlockContacts"
- #define PF_UNBLOCKCONTACTS "PFUnblockContacts"
-
- //Wywolywane przez okienko chata bo kliknieciu wyslij/nacisnieciu enter
- #define PF_SENDCHATWINDOWMESSAGE "PFSendChatWindowMessage"
- //LPARAM: TlenChatWindowInfoDef *
- //WPARAM: TlenChatWindowMessageDef *
-
- #define PF_SENDCHATWINDOWMESSAGE_RV_NOTCONNECTED -1;
- #define PF_SENDCHATWINDOWMESSAGE_RV_MESSAGEEMPTY -2;
- #define PF_SENDCHATWINDOWMESSAGE_RV_ARGUMENTERROR -3;
-
- //Wywo│ywane przez okienko chata, gdy u┐ytkownik pisze wiadomosc, lub przestal pisac
- #define PF_SENDTYPINGNOTIFICATION "PFSendTypingNotification"
- //WPARAM: contactdef *, LPARAM:
- #define PF_SENDTYPINGNOTIFICATION_TYPINGSTARTED 1
- #define PF_SENDTYPINGNOTIFICATION_TYPINGSTOPPED 2
-
- //WYwolywanie przez okienko chata, gdy uzytkownik wcisnie guziczek dzwonka w oknie rozmowy
- #define PF_SENDUSERALERT "PFSendUserAlert"
- //WPARAM: contactdef *, LPARAM:
- #define PF_SENDUSERALERT_CHAT 0
-
- #endif
-